#include <iostream>
#include <vector>

using namespace std;
class MyHashMap
{
private:
    vector<pair<int, int>> ans;

public:
    MyHashMap()
    {
    }

    void put(int key, int value)
    {
        if (-1 != get(key))
        {
            remove(key);
        }
        ans.push_back({key, value});
    }

    int get(int key)
    {
        int n = ans.size();
        for (auto &it : ans)
        {
            if (it.first == key)
            {
                return it.second;
            }
        }
        return -1;
    }

    void remove(int key)
    {
        int n = ans.size();
        for (size_t i = 0; i < n; i++)
        {
            if (ans[i].first == key)
            {
                ans.erase(ans.begin() + i);
            }
        }
    }
    void printMap()
    {
        for (auto &it : ans)
        {
            cout << it.first << "->" << it.second << endl;
            ;
        }
        cout << endl;
    }
};
const int N = 100021;
class MyHashMap2
{
    int h[N];

public:
    MyHashMap()
    {
        memset(h, -1, sizeof(h));
    }

    void put(int key, int value)
    {
        int k = (key % N + N) % N;
        h[k] = value;
    }

    int get(int key)
    {
        int k = (key % N + N) % N;
        return h[k];
    }

    void remove(int key)
    {
        int k = (key % N + N) % N;
        h[k] = -1;
    }
};

int main()
{
    MyHashMap2 myHashMap = MyHashMap2();
    myHashMap.put(1, 1); // myHashMap 现在为 [[1,1]]
    // myHashMap.printMap();
    myHashMap.put(2, 2); // myHashMap 现在为 [[1,1], [2,2]]
    // myHashMap.printMap();
    cout << myHashMap.get(1) << endl; // 返回 1 ，myHashMap 现在为 [[1,1], [2,2]]
    cout << myHashMap.get(3) << endl; // 返回 -1（未找到），myHashMap 现在为 [[1,1], [2,2]]
    myHashMap.put(2, 1);
    // myHashMap.printMap();             // myHashMap 现在为 [[1,1], [2,1]]（更新已有的值）
    cout << myHashMap.get(2) << endl; // 返回 1 ，myHashMap 现在为 [[1,1], [2,1]]
    myHashMap.remove(2);
    // myHashMap.printMap();             // 删除键为 2 的数据，myHashMap 现在为 [[1,1]]
    cout << myHashMap.get(2) << endl; // 返回 -1（未找到），myHashMap 现在为 [[1,1]]

    return 0;
}